package cn.demoncat.util.web.aspect;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import cn.demoncat.util.lang.entity.Result;
import cn.demoncat.util.web.util.ExceptionHandlerUtil;

/**
 * 描述：REST请求的全局统一异常处理器AOP
 *
 * 1、拦截@RestController注解的类
 * 2、适用于接口项目、前后端分离项目、纯JSON返回值的Controller
 * 3、所有异常输出Log日志，并转换为Result，返回JSON
 * 
 * @author 延晓磊
 *
 * @since 2017年7月21日
 */
@RestControllerAdvice
public class RestGlobalExceptionHandler {
	
	/**
	 * 
	 * 功能描述：异常处理器：RestController发生异常时拦截
	 *
	 * @param request
	 * @param ex
	 * @return
	 * 
	 * @author 延晓磊
	 *
	 * @since 2017年7月21日
	 */
	@ExceptionHandler
	public Result exceptionHandler(HttpServletRequest request, HttpServletResponse response, Exception ex){
		return ExceptionHandlerUtil.handle(ex, true);
	}
}
